home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG Library 8 / PC-SIG Library CD-ROM (8th Edition) (1990-04).iso / 201_300 / disk0265 / spiro.bas < prev    next >
Encoding:
BASIC Source File  |  1984-07-16  |  1.5 KB  |  46 lines

  1. 1 ' Program : SPIROGRAPH
  2. 2 ' Author  : Ned Mazerall & Dennis Bayomi
  3. 3 '           IBM PC User Group of Winnipeg
  4. 4 ' Pupose  : To draw spirographs using the
  5. 5 '           hypocycloid eqautions.
  6. 6 '
  7. 7 DEF FNX(T)= 320+7*J/C*(N*COS(T+F)+TR*COS(H*T+F))
  8. 8 DEF FNY(T)= 100+3*J/C*(N*SIN(T+F)-TR*SIN(H*T+F))
  9. 9 '
  10. 10 INPUT "Radius of FIXED circle     : ",R1
  11. 20 INPUT "Radius of ROLLING circle   : ",R2
  12. 30 INPUT "Radius of TRACING point    : ",TR
  13. 40 INPUT "Tracing Point INCREMENT    : ",TRI
  14. 50 INPUT "INITIAL Size Factor        : ",C
  15. 60 INPUT "FINAL Size Factor          : ",EX
  16. 70 INPUT "Phase INCREMENT (about .1) : ",PF
  17. 80 INPUT "Size Factor INCREMENT      : ",ST1
  18. 90 INPUT "Parameter (T) INCREMENT    : ",ST2
  19. 100 '
  20. 110 SCREEN 2       : CLS
  21. 120 PI= 3.141593   : GOSUB 290
  22. 130 G = (R1+R2)/R2 : M = R1+R2  : ' Epicycloid
  23. 140 H = (R1-R2)/R2 : N = R1-R2  : ' Hypocycloid
  24. 150 FOR J=1 TO EX STEP ST1
  25. 160   F = F + PF  : T = 0
  26. 170   X = FNX(T)  : Y = FNY(T)
  27. 180   FOR T=0 TO 2*D*PI+.1 STEP ST2
  28. 190     X1 = FNX(T)   : Y1 = FNY(T)
  29. 200     LINE (X,Y)-(X1,Y1)
  30. 210     X = X1 : Y = Y1
  31. 220     A$ = INKEY$ : IF A$ = CHR$(27) THEN 270
  32. 230   NEXT
  33. 240   TR = TR +TRI
  34. 250 NEXT : BEEP
  35. 260 A$= INKEY$ : IF A$ = "" THEN 260
  36. 270 SCREEN 0 : WIDTH 80
  37. 280 END
  38. 290 ' *** Least Common Multiple (LCM)
  39. 300 GOSUB 320 : LCM = R1*R2/GCD : D = LCM/R1
  40. 310 RETURN
  41. 320 ' *** Greatest Common Divisor (GCD)
  42. 330 X = R1 : Y = R2
  43. 340 R = X MOD Y : IF R <> 0 THEN X=Y : Y=R : GOTO 340
  44. 350 GCD = Y
  45. 360 RETURN
  46.